home *** CD-ROM | disk | FTP | other *** search
/ The Business Master (3rd Edition) / The Business Master (3rd Edition).iso / files / business / barcode / laserbar.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-01-09  |  5.3 KB  |  115 lines

  1. 1  '<LASERBAR.BAS> To print code 3 of 9 Bar codes on H.P. Laserjet printer.
  2. 2  'Written by Bill Baines, Enfield, CT., on Jan. 4, 1986
  3. 3  'Lines 500-980 are from CODE39.BAS Written by Bill Wood Mil., WI 05/18/85
  4. 4  '(CODE39.BAS prints bar codes on Epson or IBM graphics printers.)
  5. 5  'This program was written to demonstrate the H.P. Laserjet's ability to
  6. 6  'produce code 3 of 9 bar codes only and the author is not responsible for
  7. 7  'any damages incurred through the use of this program.
  8. 10  CLS:KEY OFF
  9. 15  BAR$=CHR$(186)+CHR$(179)+CHR$(221)+CHR$(179)+CHR$(186)
  10. 100  DIM B(100):LPRINT CHR$(27);"E";:'***** Initialize
  11. 110  S1$="":S2$="":S4$="":S5$=""
  12. 130  NS$="0"
  13. 140  WS$="000"
  14. 150  NB$="1"
  15. 160  WB$="111"
  16. 170  S1$=NB$+WS$+NB$+NS$+WB$+NS$+WB$+NS$+NB$+NS$
  17. 180  CLS:COLOR 15,0:PRINT SPC(25);BAR$;" LASERBAR ";BAR$:PRINT SPC(29);"by Bill Baines":COLOR 7,0
  18. 190  PRINT :PRINT "Utility to print code 3 of 9 bar codes on the H.P. Laserjet printer":PRINT "Note: The Laserjet should be set to respond as LPT1:":PRINT "(use the MODE LPT1:=COMx: command from DOS,  x = 1 or 2)"
  19. 200  PRINT "All entries must be in UPPER CASE."
  20. 400  LOCATE 10,1:INPUT"Message [13 Characters max] OR [enter 'END' to EXIT]";MSG$
  21. 410  IF MSG$="END" THEN GOTO 3060
  22. 415  IF LEN(MSG$)>13 THEN GOTO 400
  23. 420  PRINT"Column to start printing ( 0 -";(80-LEN(MSG$)*2);")";:INPUT K
  24. 430  IF K>(80-LEN(MSG$)*2) OR K<0 THEN GOTO 420
  25. 440  INPUT"Line # to start printing (0-50) ";LN
  26. 450  IF LN<0 OR LN>50 THEN GOTO 440
  27. 500   '*****  decode message into bar code
  28. 510  PRINT"PRINTING ==>";
  29. 520   L=LEN(MSG$)
  30. 530   FOR X=1 TO L
  31. 540   TEST$=MID$(MSG$,X,1)
  32. 545  PRINT TEST$;
  33. 550   IF TEST$="1" THEN L$=WB$+NS$+NB$+WS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
  34. 560   IF TEST$="2" THEN L$=NB$+NS$+WB$+WS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
  35. 570   IF TEST$="3" THEN L$=WB$+NS$+WB$+WS$+NB$+NS$+NB$+NS$+NB$ :GOTO 990
  36. 580   IF TEST$="4" THEN L$=NB$+NS$+NB$+WS$+WB$+NS$+NB$+NS$+WB$ :GOTO 990
  37. 590   IF TEST$="5" THEN L$=WB$+NS$+NB$+WS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
  38. 600   IF TEST$="6" THEN L$=NB$+NS$+WB$+WS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
  39. 610   IF TEST$="7" THEN L$=NB$+NS$+NB$+WS$+NB$+NS$+WB$+NS$+WB$ :GOTO 990
  40. 620   IF TEST$="8" THEN L$=WB$+NS$+NB$+WS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
  41. 630   IF TEST$="9" THEN L$=NB$+NS$+WB$+WS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
  42. 640   IF TEST$="0" THEN L$=NB$+NS$+NB$+WS$+WB$+NS$+WB$+NS$+NB$ :GOTO 990
  43. 650   IF TEST$="A" THEN L$=WB$+NS$+NB$+NS$+NB$+WS$+NB$+NS$+WB$ :GOTO 990
  44. 660   IF TEST$="B" THEN L$=NB$+NS$+WB$+NS$+NB$+WS$+NB$+NS$+WB$ :GOTO 990
  45. 670   IF TEST$="C" THEN L$=WB$+NS$+WB$+NS$+NB$+WS$+NB$+NS$+NB$ :GOTO 990
  46. 680   IF TEST$="D" THEN L$=NB$+NS$+NB$+NS$+WB$+WS$+NB$+NS$+WB$ :GOTO 990
  47. 690   IF TEST$="E" THEN L$=WB$+NS$+NB$+NS$+WB$+WS$+NB$+NS$+NB$ :GOTO 990
  48. 700   IF TEST$="F" THEN L$=NB$+NS$+WB$+NS$+WB$+WS$+NB$+NS$+NB$ :GOTO 990
  49. 710   IF TEST$="G" THEN L$=NB$+NS$+NB$+NS$+NB$+WS$+WB$+NS$+WB$ :GOTO 990
  50. 720   IF TEST$="H" THEN L$=WB$+NS$+NB$+NS$+NB$+WS$+WB$+NS$+NB$ :GOTO 990
  51. 730   IF TEST$="I" THEN L$=NB$+NS$+WB$+NS$+NB$+WS$+WB$+NS$+NB$ :GOTO 990
  52. 740   IF TEST$="J" THEN L$=NB$+NS$+NB$+NS$+WB$+WS$+WB$+NS$+NB$ :GOTO 990
  53. 750   IF TEST$="K" THEN L$=WB$+NS$+NB$+NS$+NB$+NS$+NB$+WS$+WB$ :GOTO 990
  54. 760   IF TEST$="L" THEN L$=NB$+NS$+WB$+NS$+NB$+NS$+NB$+WS$+WB$ :GOTO 990
  55. 770   IF TEST$="M" THEN L$=WB$+NS$+WB$+NS$+NB$+NS$+NB$+WS$+NB$ :GOTO 990
  56. 780   IF TEST$="N" THEN L$=NB$+NS$+NB$+NS$+WB$+NS$+NB$+WS$+WB$ :GOTO 990
  57. 790   IF TEST$="O" THEN L$=WB$+NS$+NB$+NS$+WB$+NS$+NB$+WS$+NB$ :GOTO 990
  58. 800   IF TEST$="P" THEN L$=NB$+NS$+WB$+NS$+WB$+NS$+NB$+WS$+NB$ :GOTO 990
  59. 810   IF TEST$="Q" THEN L$=NB$+NS$+NB$+NS$+NB$+NS$+WB$+WS$+WB$ :GOTO 990
  60. 820   IF TEST$="R" THEN L$=WB$+NS$+NB$+NS$+NB$+NS$+WB$+WS$+NB$ :GOTO 990
  61. 830   IF TEST$="S" THEN L$=NB$+NS$+WB$+NS$+NB$+NS$+WB$+WS$+NB$ :GOTO 990
  62. 840   IF TEST$="T" THEN L$=NB$+NS$+NB$+NS$+WB$+NS$+WB$+WS$+NB$ :GOTO 990
  63. 850   IF TEST$="U" THEN L$=WB$+WS$+NB$+NS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
  64. 860   IF TEST$="V" THEN L$=NB$+WS$+WB$+NS$+NB$+NS$+NB$+NS$+WB$ :GOTO 990
  65. 870   IF TEST$="W" THEN L$=WB$+WS$+WB$+NS$+NB$+NS$+NB$+NS$+NB$ :GOTO 990
  66. 880   IF TEST$="X" THEN L$=NB$+WS$+NB$+NS$+WB$+NS$+NB$+NS$+WB$ :GOTO 990
  67. 890   IF TEST$="Y" THEN L$=WB$+WS$+NB$+NS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
  68. 900   IF TEST$="Z" THEN L$=NB$+WS$+WB$+NS$+WB$+NS$+NB$+NS$+NB$ :GOTO 990
  69. 910   IF TEST$="-" THEN L$=NB$+WS$+NB$+NS$+NB$+NS$+WB$+NS$+WB$ :GOTO 990
  70. 920   IF TEST$="." THEN L$=WB$+WS$+NB$+NS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
  71. 930   IF TEST$=" " THEN L$=NB$+WS$+WB$+NS$+NB$+NS$+WB$+NS$+NB$ :GOTO 990
  72. 940   IF TEST$="*" THEN L$=NB$+WS$+NB$+NS$+WB$+NS$+WB$+NS$+NB$ :GOTO 990
  73. 950   IF TEST$="$" THEN L$=NB$+WS$+NB$+WS$+NB$+WS$+NB$+NS$+NB$ :GOTO 990
  74. 960   IF TEST$="/" THEN L$=NB$+WS$+NB$+WS$+NB$+NS$+NB$+WS$+NB$ :GOTO 990
  75. 970   IF TEST$="+" THEN L$=NB$+WS$+NB$+NS$+NB$+WS$+NB$+WS$+NB$ :GOTO 990
  76. 980   IF TEST$="%" THEN L$=NB$+NS$+NB$+WS$+NB$+WS$+NB$+WS$+NB$ :GOTO 990
  77. 985  PRINT :PRINT "INVALID CHARACTER [";TEST$;"] DETECTED IN INPUT! - ABORTED -": GOTO 3060
  78. 990  L$=L$+NS$:S2$=S2$+L$:NEXT X
  79. 1000  S4$=S1$+S2$+S1$
  80. 1010  S=LEN(S4$):IF INT(S/8)<>S/8 THEN S4$="0"+S4$:GOTO 1010
  81. 1020  C=S/8 :' FIND OUT HOW MANY BYTES TO SEND TO PRINTER
  82. 1030  FOR Y=0 TO C-1
  83. 1040  S5$=MID$(S4$,Y*8+1,8)
  84. 1050  GOSUB 5000
  85. 1060  B(Y+1)=D
  86. 1070  NEXT Y
  87. 2000  'SEND BYTES B(1)...B(C) TO PRINTER
  88. 2040  WIDTH "LPT1:",255:'DISABLE CR/LF
  89. 2050  LPRINT CHR$(27);"*t100R";:'SET RESOLUTION TO 100 DPI
  90. 2060  K$="&a"+MID$(STR$(K),2,LEN(STR$(K)))+"C":LPRINT CHR$(27);K$;:'PLACE CURSOR AT COL K
  91. 2065  LN$="&a"+MID$(STR$(LN),2,LEN(STR$(LN)))+"R":LPRINT CHR$(27);LN$;:'PLACE CURSOR AT LINE LN
  92. 2070  LPRINT CHR$(27);"*r1A";:'START RASTER GRAPHIC MODE
  93. 2080  C$=MID$(STR$(C),2,LEN(STR$(C)))
  94. 2090  C$="*b"+C$+"W"
  95. 2095  FOR Y=1 TO 35:'BAR CODE HEIGHT - 35 DOTS
  96. 3000  LPRINT CHR$(27);C$;
  97. 3010  FOR X=1 TO C
  98. 3020  LPRINT CHR$(B(X));
  99. 3030  NEXT X
  100. 3040  NEXT Y
  101. 3050  LPRINT CHR$(27);"*rB";:'END RASTER GRAPHIC MODE
  102. 3055  LPRINT:LPRINT SPC(K);"*";MSG$;"*"
  103. 3056  GOTO 110
  104. 3060  LPRINT CHR$(12);:'FORM FEED
  105. 3070  LPRINT CHR$(27);"E";:'RESET PRINTER
  106. 3080  WIDTH "LPT1:",80
  107. 4000  END
  108. 5000  'CONVERT BIN TO DEC SUB
  109. 5001  ' INPUT 8-BIT S5$, OUTPUT D
  110. 5005  D=0
  111. 5010  FOR X=1 TO 8
  112. 5030  D=D+VAL(MID$(S5$,X,1))*2^(8-X)
  113. 5040  NEXT X
  114. 5050  RETURN
  115.